Reactã®å®éšçæ©èœexperimental_postponeãšé å»¶å®è¡ã¡ã¢ãªç®¡çãæ¢æ±ããè€éãªã¢ããªã±ãŒã·ã§ã³ã®ã¬ã³ããªã³ã°ãæé©åãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããæ¹æ³ãçè§£ããŸãã
ããã©ãŒãã³ã¹ãè§£æŸããïŒReactã®experimental_postponeãšé å»¶å®è¡ã¡ã¢ãªãžã®æ·±æã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®äººæ°ã®JavaScriptã©ã€ãã©ãªã§ããReactã¯ãåžžã«é²åããŠããŸããæè¿ã®è峿·±ãéçºã®1ã€ã¯experimental_postponeæ©èœã§ãããããã¯é
å»¶å®è¡ã¡ã¢ãªç®¡çãšçµã¿åãããããšã§ãç¹ã«è€éãªã¢ããªã±ãŒã·ã§ã³ã®ã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãæé©åããããã®åŒ·åãªæ°ããæ¹æ³ãæäŸããŸãããã®èšäºã§ã¯ãexperimental_postponeãšé
å»¶å®è¡ã®è€éããæãäžããããããã©ã®ããã«æ©èœããã©ã®ãããªå©ç¹ããããããããŠããããæŽ»çšããŠã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ãããã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœæããæ¹æ³ã説æããŸãã
åé¡ã®çè§£ïŒããããã³ã°ã¬ã³ããªã³ã°
解決çã«é£ã³èŸŒãåã«ãexperimental_postponeã察åŠããåé¡ãçè§£ããããšãéèŠã§ããåŸæ¥ã®Reactã®ã¬ã³ããªã³ã°ã§ã¯ãæŽæ°ã¯ãã°ãã°åæçã«åŠçãããŸããããã¯ãã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ã«ããªãã®æéïŒè€éãªèšç®ãå€§èŠæš¡ãªããŒã¿ã»ããããŸãã¯ãããã¯ãŒã¯ãªã¯ãšã¹ãã®ããïŒãå¿
èŠãªå Žåãã¡ã€ã³ã¹ã¬ããããããã¯ããããã¡ãªãããŸãã¯å¿çããªããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ãªããå¯èœæ§ãããããšãæå³ããŸããããã¯ãåŠçèœåãéãããããã€ã¹ããäžçã®å€ãã®å°åã§äžè¬çãªçŸå®ã§ããäœéãªãããã¯ãŒã¯æ¥ç¶ãæ±ãå Žåã«ç¹ã«é¡èã§ãã
eã³ããŒã¹ãã©ãããã©ãŒã ãæ§ç¯ããŠããã·ããªãªãèããŠã¿ãŸããããåå詳现ããŒãžã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- é«è§£å床ã®ç»åã®ã£ã©ãªãŒ
- 詳现ãªè£œå仿§
- å€éšAPIããååŸãã顧客ã¬ãã¥ãŒ
- é¢é£ååã®ãããã
ããããã¹ãŠã®ã³ã³ããŒãã³ããåæã«ã¬ã³ããªã³ã°ã詊ã¿ããšãç¹ã«é¡§å®¢ã¬ãã¥ãŒã®ååŸã«æéããããå ŽåãããŒã¿ã®èªã¿èŸŒã¿ãšåŠçäžã«ããŒãžå šäœãããªãŒãºããããã«èŠããå¯èœæ§ããããŸããããã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæãªãããã©ã¹ãã¬ãŒã·ã§ã³ãæœåšçãªå£²äžæå€±ã«ã€ãªãããŸããã€ã³ãã®ãŠãŒã¶ãŒãé ãã€ã³ã¿ãŒãããæ¥ç¶ã§ãã®é å»¶ãçµéšããå Žåãæ³åããŠã¿ãŠãã ããã圌ãã¯ããŒãžãå®å šã«æŸæ£ããŠããŸããããããŸããã
Reactã®Concurrent ModeãšSuspenseã®å°å ¥
ãããã®ããã©ãŒãã³ã¹èª²é¡ã«å¯ŸåŠãããããReactã¯Concurrent ModeïŒReact 18以éã§å©çšå¯èœïŒãå°å ¥ããŸãããConcurrent Modeã«ãããReactã¯ã¬ã³ããªã³ã°ã¿ã¹ã¯ãäžæãäžæåæ¢ãåéããããšãã§ããããã¹ã ãŒãºãªæŽæ°ãšå¿çæ§ã®åäžãå®çŸããŸããConcurrent Modeã®äž»èŠãªã³ã³ããŒãã³ãã¯React Suspenseã§ããããã¯ãéåæããŒã¿ã®èªã¿èŸŒã¿ãåŸ ã€éãã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ããäžæåæ¢ããããã¡ã«ããºã ã§ããReact Suspenseã¯ãéåæAPIåŒã³åºããè¡ãããã®å¿çããåŸ æ©ãããããŒãã£ã³ã°ã¹ãããŒã®ãããªãã©ãŒã«ããã¯ã³ã³ãã³ãã衚瀺ããããã«å©çšã§ããŸãã
React Suspenseã䜿çšãããšãAPIåŒã³åºããç»åèªã¿èŸŒã¿ãªã©ã®éåæäŸåé¢ä¿ããã©ãŒã«ããã¯ã³ã³ããŒãã³ãã§ã©ããã§ããŸããããŒã¿ãèªã¿èŸŒãŸããŠããéãReactã¯ãã©ãŒã«ããã¯ã³ã³ãã³ãã衚瀺ããUIã®å¿çæ§ãç¶æããŸããããŒã¿ãæºåã§ããããReactã¯å®å šã«ã¬ã³ããªã³ã°ãããã³ã³ããŒãã³ãã«ã·ãŒã ã¬ã¹ã«ç§»è¡ããŸãã
äŸïŒ
import React, { Suspense } from 'react';
function ProductDetails({ productId }) {
const product = useProduct(productId); // Custom hook to fetch product data
return (
<div>
<h2>{product.name}</h2>
<p>{product.description}</p>
<img src={product.imageUrl} alt={product.name} />
</div>
);
}
function ProductDetailsPage() {
return (
<Suspense fallback={<p>Loading product details...</p>}>
<ProductDetails productId="123" />
</Suspense>
);
}
export default ProductDetailsPage;
ãã®äŸã§ã¯ãProductDetailsã³ã³ããŒãã³ãããã©ãŒã«ããã¯ä»ãã®Suspenseã³ã³ããŒãã³ãã§ã©ãããããŠããŸããuseProductããã¯ãååããŒã¿ãååŸããŠããéããã©ãŒã«ããã¯ããã¹ããLoading product details...ãã衚瀺ãããŸããããŒã¿ãå©çšå¯èœã«ãªããšãProductDetailsã³ã³ããŒãã³ãã¯éåžžéãã¬ã³ããªã³ã°ãããŸãã
experimental_postponeã®åœ¹å²
Suspenseã¯åŒ·åã§ãããå¿
ããããã¹ãŠã®ããã©ãŒãã³ã¹ã®ããã«ããã¯ã解決ããããã§ã¯ãããŸãããæã«ã¯ãã¬ã³ããªã³ã°*ã§ãã*ã³ã³ããŒãã³ãããããã®ã®ããããããã«ã¬ã³ããªã³ã°ãããšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æªåœ±é¿ãåãŒãå ŽåããããŸããããã§experimental_postponeã®åºçªã§ãã
experimental_postponeã¯ãã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãåŸã§*å»¶æ*ã§ãã颿°ã§ããããã¯åºæ¬çã«Reactã«ããã®ã³ã³ããŒãã³ãã¯åæã¬ã³ããªã³ã°ã«ã¯éèŠã§ã¯ãããŸãããã¡ã€ã³ã¹ã¬ããã空ããŠãããšãã«åŸã§ã¬ã³ããªã³ã°ããŠãã ããããšäŒããŸããããã¯ç¹ã«æ¬¡ã®ãããªã³ã³ããŒãã³ãã«åœ¹ç«ã¡ãŸãïŒ
- ã¹ã¯ããŒã«ããªããšèŠããªãå Žæã«ããïŒãŠãŒã¶ãŒã«ããã«ã¯èŠããªãïŒ
- éèŠã§ãªãã³ã³ãã³ããå«ã
- ã¬ã³ããªã³ã°ã«èšç®ã³ã¹ããããã
experimental_postponeã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã®äœæããã©ãŒãã³ã¹ã倧å¹
ã«åäžãããããšãã§ããŸããéèŠãªã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãåªå
ããããšã§ãããŒãžã®ä»ã®éšåãããã¯ã°ã©ãŠã³ãã§èªã¿èŸŒãŸããŠããéã§ãããŠãŒã¶ãŒã¯ããã«äœããèŠãããšãã§ããŸãã
experimental_postponeã®ä»çµã¿
experimental_postpone颿°ã¯ãReactèŠçŽ ãè¿ãã³ãŒã«ããã¯ãåãå
¥ããŸããReactã¯ãã®åŸããã®èŠçŽ ã®ã¬ã³ããªã³ã°ãåŸã§å®è¡ããããã«ã¹ã±ãžã¥ãŒã«ããå Žåã«ãã£ãŠã¯æåã®æç»åŸã«è¡ããŸããé
å»¶ã¬ã³ããªã³ã°ã®æ£ç¢ºãªã¿ã€ãã³ã°ã¯Reactã®ã¹ã±ãžã¥ãŒã©ã«ãã£ãŠç®¡çãããå©çšå¯èœãªCPUæéãä»ã®ã¿ã¹ã¯ã®åªå
床ãªã©ãããŸããŸãªèŠå ã«äŸåããŸãã
以äžã¯experimental_postponeã®ç°¡åãªäœ¿çšäŸã§ãïŒ
import React, { unstable_postpone as postpone } from 'react';
function BelowTheFoldComponent() {
// This component contains content that's below the fold
return (
<div>
<p>This content will be rendered later.</p>
</div>
);
}
function MyComponent() {
return (
<div>
<h1>Critical Content</h1>
<p>This content is rendered immediately.</p>
{postpone(() => <BelowTheFoldComponent />)}
</div>
);
}
export default MyComponent;
ãã®äŸã§ã¯ãBelowTheFoldComponentã¯MyComponentã®åæã¬ã³ããªã³ã°åŸã«ã¬ã³ããªã³ã°ãããåæèªã¿èŸŒã¿æéãæ¹åãããŸãã
é å»¶å®è¡ã¡ã¢ãªïŒåºç€ãšãªãã¡ã«ããºã ã®çè§£
experimental_postponeã®åã¯ãReactã®é
å»¶å®è¡ã¡ã¢ãªç®¡çãšã®çµ±åã«ãããŸããã³ã³ããŒãã³ããå»¶æããããšãReactã¯ãã®ã¬ã³ããªã³ã°ã®ããã«ããã«ã¡ã¢ãªãå²ãåœãŠãŸããã代ããã«ããã¬ãŒã¹ãã«ããŒãäœæããå®éã®ã¬ã³ããªã³ã°ãåŸã§å®è¡ããããã«ã¹ã±ãžã¥ãŒã«ããŸãããã®é
å»¶å®è¡ã¯ãã¡ã¢ãªäœ¿çšéã«å€§ããªåœ±é¿ãäžããŸãã
é å»¶å®è¡ã¡ã¢ãªã®å©ç¹ïŒ
- åæã¡ã¢ãªãããããªã³ãã®åæžïŒéèŠã§ãªãã³ã³ããŒãã³ãã®ã¡ã¢ãªå²ãåœãŠãé ãããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®åæã¡ã¢ãªãããããªã³ããå€§å¹ ã«åæžãããŸããããã¯ãæºåž¯é»è©±ãå€ãã³ã³ãã¥ãŒã¿ãªã©ãã¡ã¢ãªãéãããããã€ã¹ã§ç¹ã«éèŠã§ããçºå±éäžåœã®ãŠãŒã¶ãŒãããŒãšã³ãã®ã¹ããŒããã©ã³ã§ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããå Žé¢ãæ³åããŠã¿ãŠãã ãããé å»¶å®è¡ã¯åœŒãã®äœéšã«å€§ããªéããããããå¯èœæ§ããããŸãã
- èµ·åæéã®æ¹åïŒåæã¡ã¢ãªãããããªã³ããå°ããã»ã©ãèµ·åæéãéããªããŸãããã©ãŠã¶ãèªã¿èŸŒãã§åŠçããããŒã¿ãå°ãªããªããããã€ã³ã¿ã©ã¯ãã£ãã«ãªããŸã§ã®æéãççž®ãããŸãããã®æ¹åãããèµ·åæéã¯ããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åäžãšçŽåž°çã®äœäžã«ã€ãªããå¯èœæ§ããããŸãã
- ã¹ã ãŒãºãªã¹ã¯ããŒã«ãšã€ã³ã¿ã©ã¯ã·ã§ã³ïŒã¹ã¯ããŒã«ããªããšèŠããªãã³ã³ãã³ãã®ã¬ã³ããªã³ã°ãé å»¶ãããããšã§ãã¡ã€ã³ã¹ã¬ããã®è² è·ã軜æžãããããã¹ã ãŒãºãªã¹ã¯ããŒã«ãšã€ã³ã¿ã©ã¯ã·ã§ã³ãå®çŸããŸãããŠãŒã¶ãŒã¯ãè€éãªããŒãžã§ããããå¿çæ§ãé«ãæµåçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœéšã§ããŸãã
- ããè¯ããªãœãŒã¹å©çšïŒé å»¶å®è¡ã«ãããReactã¯éèŠãªã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãåªå ãããªãœãŒã¹ãå¹ççã«å²ãåœãŠãããããã«ãªããŸããããã«ãããç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®å šäœçãªããã©ãŒãã³ã¹ãåäžããããããªãŒæ¶è²»ãåæžãããŸãã
experimental_postponeãšé å»¶å®è¡ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
experimental_postponeãšé
å»¶å®è¡ã广çã«æŽ»çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããïŒ
- éèŠã§ãªãã³ã³ããŒãã³ãã®ç¹å®ïŒã¢ããªã±ãŒã·ã§ã³ãæ³šææ·±ãåæããåæã¬ã³ããªã³ã°ã«äžå¯æ¬ ã§ã¯ãªãã³ã³ããŒãã³ããç¹å®ããŸãããããã¯å»¶æã®æåãªåè£ã§ããäŸïŒ
- ã¹ã¯ããŒã«ããªããšèŠããªãã³ã³ãã³ã
- åæãã©ãã«ãŒ
- ãã£ãã«äœ¿çšãããªãæ©èœ
- è€éãªèŠèŠå
- ããŒã¿ååŸã«ã¯Suspenseã䜿çšïŒ
experimental_postponeãSuspenseãšçµã¿åãããŠãéåæããŒã¿ååŸãåŠçããŸããããã«ãããããŒã¿ãååŸãããŠããéã«èªã¿èŸŒã¿ç¶æ ã衚瀺ã§ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããã«åäžããŸãã - ã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ãªã³ã°ïŒReactã®ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ã
experimental_postponeãæã圱é¿ãäžããå¯èœæ§ã®ããé åãç¹å®ããŸãã - ç°ãªãããã€ã¹ãšãããã¯ãŒã¯ã§ãã¹ãïŒããŸããŸãªããã€ã¹ãšãããã¯ãŒã¯æ¡ä»¶ã§ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ãããé å»¶å®è¡ãæåŸ ãããããã©ãŒãã³ã¹äžã®å©ç¹ããããããŠããããšã確èªããŸããç°ãªãå°åã§ã®å®éã®ã·ããªãªãã·ãã¥ã¬ãŒãããããã«ããšãã¥ã¬ãŒããããããŒãšã³ãããã€ã¹ãäœéãããã¯ãŒã¯æ¥ç¶ã§ã®ãã¹ããæ€èšããŠãã ããã
- ã¡ã¢ãªäœ¿çšéã®ç£èŠïŒã¡ã¢ãªäœ¿çšéãæ³šææ·±ãç£èŠããé å»¶å®è¡ãã¡ã¢ãªãªãŒã¯ãæéçµéã«ããéå°ãªã¡ã¢ãªæ¶è²»ã«ã€ãªãã£ãŠããªãããšã確èªããŸãã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ
experimental_postponeãããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã®äžåœ¢æ ãšããŠäœ¿çšããŸããé å»¶ãããã³ã³ããŒãã³ããã¬ã³ããªã³ã°ã«å€±æããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ãæ©èœããããšãä¿èšŒããŸãã - é床ã®äœ¿çšãé¿ããïŒ
experimental_postponeã¯åŒ·åãªããŒã«ã§ãããé床ã®äœ¿çšã¯é¿ããŠãã ãããããŸãã«ãå€ãã®ã³ã³ããŒãã³ããé å»¶ããããšãæççãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããããã©ãŒãã³ã¹ãæãªãå¯èœæ§ããããŸãã
å®è·µäŸïŒäžè¬çãªUIãã¿ãŒã³ã®æé©å
experimental_postponeã䜿çšããŠäžè¬çãªUIãã¿ãŒã³ãæé©åããããã€ãã®å®è·µäŸãèŠãŠãããŸãããïŒ
1. ç¡éã¹ã¯ããŒã«ãªã¹ã
ç¡éã¹ã¯ããŒã«ãªã¹ãã¯ãå€§èŠæš¡ãªããŒã¿ã»ããã衚瀺ããããã®äžè¬çãªUIãã¿ãŒã³ã§ãããªã¹ãå
ã®ãã¹ãŠã®é
ç®ãäžåºŠã«ã¬ã³ããªã³ã°ãããšãç¹ã«åé
ç®ã«ç»åãè€éãªã³ã³ããŒãã³ããå«ãŸããŠããå Žåãéåžžã«ã³ã¹ãããããå¯èœæ§ããããŸããexperimental_postponeã䜿çšãããšãããã«ã¯è¡šç€ºãããªãé
ç®ã®ã¬ã³ããªã³ã°ãé
å»¶ãããããšãã§ããŸãã
import React, { useState, useEffect, unstable_postpone as postpone } from 'react';
function InfiniteScrollList() {
const [items, setItems] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
// Simulate fetching data from an API
setTimeout(() => {
setItems(generateDummyItems(50));
setLoading(false);
}, 1000);
}, []);
const generateDummyItems = (count) => {
const dummyItems = [];
for (let i = 0; i < count; i++) {
dummyItems.push({ id: i, name: `Item ${i}` });
}
return dummyItems;
};
return (
<div style={{ height: '300px', overflowY: 'scroll' }}>
{loading ? (
<p>Loading...</p>
) : (
items.map((item) =>
postpone(() => (
<div key={item.id} style={{ padding: '10px', borderBottom: '1px solid #ccc' }}>
{item.name}
</div>
))
)
)}
</div>
);
}
export default InfiniteScrollList;
ãã®äŸã§ã¯ããªã¹ãã®åé
ç®ãpostponeã§ã©ãããããŠããŸããããã«ãããæåã«è¡šç€ºãããé
ç®ã®ã¿ãããã«ã¬ã³ããªã³ã°ãããæ®ãã¯é
å»¶ãããŸãããŠãŒã¶ãŒãäžã«ã¹ã¯ããŒã«ãããšãReactã¯æ®ãã®é
ç®ãåŸã
ã«ã¬ã³ããªã³ã°ããŸãã
2. ã¿ãä»ãã€ã³ã¿ãŒãã§ãŒã¹
ã¿ãä»ãã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯ããŠãŒã¶ãŒã«ããã«ã¯è¡šç€ºãããªãã³ã³ãã³ããå«ãŸããŠããããšããããããŸããéã¢ã¯ãã£ããªã¿ãã®ã¬ã³ããªã³ã°ãé å»¶ãããããšã§ãããŒãžã®åæèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åã§ããŸãã
import React, { useState, unstable_postpone as postpone } from 'react';
function TabbedInterface() {
const [activeTab, setActiveTab] = useState('tab1');
const renderTabContent = (tabId) => {
switch (tabId) {
case 'tab1':
return <div>Content for Tab 1</div>;
case 'tab2':
return <div>Content for Tab 2</div>;
case 'tab3':
return <div>Content for Tab 3</div>;
default:
return null;
}
};
return (
<div>
<ul>
<li onClick={() => setActiveTab('tab1')}>Tab 1</li>
<li onClick={() => setActiveTab('tab2')}>Tab 2</li>
<li onClick={() => setActiveTab('tab3')}>Tab 3</li>
</ul>
{activeTab === 'tab1' ? renderTabContent('tab1') : postpone(() => renderTabContent('tab1'))}
{activeTab === 'tab2' ? renderTabContent('tab2') : postpone(() => renderTabContent('tab2'))}
{activeTab === 'tab3' ? renderTabContent('tab3') : postpone(() => renderTabContent('tab3'))}
</div>
);
}
export default TabbedInterface;
ãã®äŸã§ã¯ãã¢ã¯ãã£ããªã¿ãã®ã³ã³ãã³ãã®ã¿ãããã«ã¬ã³ããªã³ã°ãããŸããéã¢ã¯ãã£ããªã¿ãã®ã³ã³ãã³ãã¯experimental_postponeã䜿çšããŠé
å»¶ãããŸãããŠãŒã¶ãŒãå¥ã®ã¿ãã«åãæ¿ãããšããã®ã¿ãã®ã³ã³ãã³ããã¬ã³ããªã³ã°ãããŸãã
èæ ®äºé ãšæ³šæç¹
experimental_postponeã¯å€§ããªããã©ãŒãã³ã¹äžã®å©ç¹ãæäŸããŸããããã®å¶éãšæœåšçãªæ¬ ç¹ã«æ³šæããããšãéèŠã§ãïŒ
- å®éšçã¹ããŒã¿ã¹ïŒååã瀺ãããã«ã
experimental_postponeã¯å®éšçãªæ©èœã§ãããã®APIãšåäœã¯å°æ¥ã®ReactãªãªãŒã¹ã§å€æŽãããå¯èœæ§ããããŸããæ³šæããŠäœ¿çšããå¿ èŠã«å¿ããŠã³ãŒããé©å¿ãããæºåãããŠãã ããã - èŠèŠçãªäžå ·åã®å¯èœæ§ïŒé å»¶ã¬ã³ããªã³ã°ã¯ãæ éã«å®è£ ããªããšèŠèŠçãªäžå ·åãåŒãèµ·ããããšããããŸããäŸãã°ãé å»¶ãããã³ã³ããŒãã³ããæåã®æç»åŸã«ã¬ã³ããªã³ã°ããããšãã¬ã€ã¢ãŠãããããã«ãããå¯èœæ§ããããŸãã
- SEOãžã®åœ±é¿ïŒSEOã«ãšã£ãŠéèŠãªã³ã³ãã³ãã®ã¬ã³ããªã³ã°ãé
å»¶ãããããã«
experimental_postponeã䜿çšããŠããå Žåãæ€çŽ¢ãšã³ãžã³ã®ã©ã³ãã³ã°ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸããéèŠãªã³ã³ãã³ãããµãŒããŒãµã€ãã§ã¬ã³ããªã³ã°ãããããæ€çŽ¢ãšã³ãžã³ã¯ããŒã©ãŒãã€ã³ããã¯ã¹ä»ãã§ããã»ã©è¿ éã«ã¬ã³ããªã³ã°ãããããšã確èªããŠãã ããã - è€éãïŒ
experimental_postponeã䜿çšãããšãã³ãŒãããŒã¹ã«è€éããå ãããŸããããã©ãŒãã³ã¹äžã®å©ç¹ããå¢å ããè€éããäžåããã©ãããæ éã«æ€èšããããšãéèŠã§ãã
experimental_postponeã®ä»£æ¿æ¡
experimental_postponeã䜿çšããåã«ãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«ããé©ãã代æ¿ãœãªã¥ãŒã·ã§ã³ããããã©ãããæ€èšããŠãã ããïŒ
- ã³ãŒãåå²ïŒã³ãŒãåå²ã«ãããã¢ããªã±ãŒã·ã§ã³ãããå°ããªãã³ãã«ã«åå²ãããªã³ããã³ãã§èªã¿èŸŒãããšãã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãå€§å¹ ã«ççž®ã§ããŸãã
- é å»¶èªã¿èŸŒã¿ïŒé å»¶èªã¿èŸŒã¿ã«ãããç»åããã®ä»ã®ã¢ã»ãããå¿ èŠãªãšãã«ã®ã¿èªã¿èŸŒãããšãã§ããŸããããã«ãããå€ãã®ç»åãããããŒãžã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ã¡ã¢åïŒã¡ã¢åã¯ãã³ã¹ãã®ããã颿°åŒã³åºãã®çµæããã£ãã·ã¥ããææ³ã§ããããã«ãããåãããããã£ã§é »ç¹ã«åã¬ã³ããªã³ã°ãããã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒïŒSSRã«ããããµãŒããŒäžã§ã¢ããªã±ãŒã·ã§ã³ãã¬ã³ããªã³ã°ããå®å šã«ã¬ã³ããªã³ã°ãããHTMLãã¯ã©ã€ã¢ã³ãã«éä¿¡ã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãšSEOãæ¹åã§ããŸãã
Reactããã©ãŒãã³ã¹æé©åã®æªæ¥
experimental_postponeãšé
å»¶å®è¡ã¡ã¢ãªç®¡çã¯ãReactã®ããã©ãŒãã³ã¹æé©åã«ããã倧ããªäžæ©ã衚ããŠããŸããReactãé²åãç¶ããã«ã€ããŠã髿§èœãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®ããã«åŒ·åãªããŒã«ãæè¡ãç»å ŽããããšãæåŸ
ãããŸãããããã®éçºã«ã€ããŠåžžã«æ
å ±ãå
¥æããæ°æ©èœã詊ãããšã¯ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«çŽ æŽããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããçŸä»£çã§ã¬ã¹ãã³ã·ããªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã
çµè«
Reactã®experimental_postponeæ©èœã¯ãé
å»¶å®è¡ã¡ã¢ãªç®¡çãšçµã¿åãããããšã§ãç¹ã«è€éãªã¢ããªã±ãŒã·ã§ã³ã«ãããŠãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãæé©åãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸããéèŠã§ãªãã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãæŠç¥çã«é
å»¶ãããããšã«ãããåæã¡ã¢ãªãããããªã³ããåæžããèµ·åæéãæ¹åããããã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæã§ããŸããexperimental_postponeã¯ãŸã å®éšçãªæ©èœã§ãããæ
éãªæ€èšãå¿
èŠã§ããã倿§ãªããã€ã¹ããããã¯ãŒã¯æ¡ä»¶ãæã€ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«é«æ§èœãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ææãªã¢ãããŒããæäŸããŸããæå³ããªãå¯äœçšãå°å
¥ããããšãªããæãŸããããã©ãŒãã³ã¹äžã®å©ç¹ã確å®ã«éæããããã«ãã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ãªã³ã°ã培åºçãªãã¹ããã¡ã¢ãªäœ¿çšéã®ç£èŠãå¿ããªãã§ãã ãããReactãé²åãç¶ããäžã§ããããã®æ°ããæè¡ãåãå
¥ããããšã¯ãåè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ãšãªãã§ãããã